/*
 * @Author: wwssaabb
 * @Date: 2021-12-08 08:32:58
 * @LastEditTime: 2021-12-08 08:44:06
 * @FilePath: \handwritten-code\algorithm\二叉树的最大深度.js
 */

/* 
给定一个二叉树， 找出其最大深度。

二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。

说明: 叶子节点是指没有子节点的节点。

示例：
给定二叉树[3, 9, 20, null, null, 15, 7]，
3

来源： 力扣（ LeetCode）
链接： https: //leetcode-cn.com/problems/maximum-depth-of-binary-tree
*/

function TreeNode(val, left, right) {
  this.val = (val === undefined ? 0 : val)
  this.left = (left === undefined ? null : left)
  this.right = (right === undefined ? null : right)
}

//递归
var maxDepth = function (root) {
  return !root ? 0 : Math.max(maxDepth(root.left), maxDepth(root.right)) + 1
};

const node = new TreeNode(3, new TreeNode(9), new TreeNode(20, new TreeNode(15), new TreeNode(7, new TreeNode(4))))

console.log(maxDepth(node))